# 列表：有序，不唯一的序列

# 定义列表，列表中点的元素类型可以不一致
list = [1, 2, 3, 4, 5, 6, 7, 8, 9]
print(list, type(list))

# 定义空的列表
list = []

# 向列表中追加元素
list.append(1)
list.append(2)
list.append(3)

print(list)

# 指定下标插入元素
list.insert(1, 100)

print(list)

# 通过下标获取元素
print(list[1])

# 修改指定下标的值
list[1] = 200
print(list)

list.append(200)
print(list)
# 删除元素, 删除第一个值
list.remove(200)
print(list)

# 指定下标删除元素
del list[0]
print(list)

# 取出指点下标的元素，取出来就没了
print(list.pop(1))
print(list)

# python中下标有两种
# 1、从左往右，0到N-1
# 2、从右往左，-1到-N
list = [1, 1, 2, 3, 4, 5, 6, 7, 8, 9]

print(list[0])
# len获取集合的长度
print(list[len(list) - 1])  # 获取最后一个元素
print(list[-1])  # 获取最后一个元素

# 统计集合中指定元素的数量
print(list.count(1))

# 清空集合
# list.clear()
# print(list)

# 复制一个新的集合
list2 = list.copy()
print(list2)

# 插入多个元素
list.extend([4, 5, 6, 7, 8])
print(list)

# 插入元素在集合中第一个出现的位置
print(list.index(4))

# 反转集合
list.reverse()
print(list)

# 对集合进行排序，默认是升序
# reverse 是否降序
list.sort(reverse=True)

print(list)

# 切片
# 列表的名称[开始位置:结束位置:步长]
# 步长默认为1
# 不包含结束的位置
# 开始位置不指点，从头开始
# 结束位置不指定 ，到末尾
list = [1, 2, 3, 4, 5, 6, 7, 8, 9]

print(list[3:6])
print(list[:])  # 从头到尾截取数据
print(list[-6:-3])  # 指定负下标截取
print(list[5:2:-1])  # 反向截取，步长为负数
print(list[::-1])  # 反转
print(list[::2])  # 每间隔一个元素截取一个

# 嵌套列表
list = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]

print(list)
print(list[0])
print(list[0][0])

# 元组：不可变的列表
# 元组除了不能增删改元素外，其它列表的方法都有
tuple = (1, 1, 2, 3, 4, 5, 6, 7, 8)

print(tuple)
print(tuple.count(1))
print(tuple.index(4))
print(tuple[0])
print(tuple[::-1])